﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 定义一个泛型接口 IRepository<T>，并实现一个具体的类 InMemoryRepository<T>。
namespace CS_BEGINNER_TO_PROFICIENT.STD.GenericitySTD
{
    public interface IRepository<T>
    {
        void Add(T item);
        T Get(int id);
        void Remove(int id);
    }

    class InMemoryRepository<T> : IRepository<T>
    {
        private Dictionary<int, T> _storage = new Dictionary<int, T>();
        private int _nextId = 0;

        public void Add(T item) => _storage[_nextId++] = item;

        public T Get(int id) => _storage.ContainsKey(id) ? _storage[id] : default;

        public void Remove(int id)
        {
            if(_storage.ContainsKey(id))
            {
                _storage.Remove(id);
            }
        }
    }
}
